<!DOCTYPE HTML>
<html>
<head>
    <title>Dashboard</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <h2 style="text-align: center;padding-bottom: 0.1in;font-size: 0.4in" >Your Account</h2>

    <table class="table">
        <div class="form-group">
            <input type="text" class="form-control" placeholder="Enter Id" id="id">
        </div>
        <button type="submit" class="btn btn-default" id="submit">Submit</button>
            <tr>
                <td style="padding-left: 1in;font-size: 0.2in">Name</td>
                <td style="padding-right: 0.35in;font-size: 0.2in"><pre2></pre2></td>
            </tr>
        </tbody>
    </table>
    <script type="text/javascript">

        submit.addEventListener('click', function() {
            var Display2 = document.querySelector('pre2');

        var Fabric_Client = require('fabric-client');
        var path = require('path');
        var util = require('util');
        var os = require('os');
        var id = document.getElementById('id').value;

        var fabric_client = new Fabric_Client();

        console.log("querying hash by name")

        // setup the fabric network
        var channel = fabric_client.newChannel('mychannel');
        var peer = fabric_client.newPeer('grpc://localhost:7051');
        channel.addPeer(peer);

        //
        var member_user = null;
        var store_path = path.join(os.homedir(), '.hfc-key-store');
        console.log('Store path:'+store_path);
        var tx_id = null;

        // create the key value store as defined in the fabric-client/config/default.json 'key-value-store' setting
        Fabric_Client.newDefaultKeyValueStore({ path: store_path
        }).then((state_store) => {
            // assign the store to the fabric client
            fabric_client.setStateStore(state_store);
            var crypto_suite = Fabric_Client.newCryptoSuite();
            // use the same location for the state store (where the users' certificate are kept)
            // and the crypto store (where the users' keys are kept)
            var crypto_store = Fabric_Client.newCryptoKeyStore({path: store_path});
            crypto_suite.setCryptoKeyStore(crypto_store);
            fabric_client.setCryptoSuite(crypto_suite);

            // get the enrolled user from persistence, this user will sign all requests
            return fabric_client.getUserContext('user1', true);
        }).then((user_from_store) => {
            if (user_from_store && user_from_store.isEnrolled()) {
                console.log('Successfully loaded user1 from persistence');
                member_user = user_from_store;
            } else {
                throw new Error('Failed to get user1.... run registerUser.js');
            }
            
            const request = {
                chaincodeId: 'axess',
                txId: tx_id,
                fcn: 'getnames',
                args: [id]
            };

            // send the query proposal to the peer
            return channel.queryByChaincode(request);
        }).then((query_responses) => {
            console.log("Query has completed, checking results");
            // query_responses could have more than one  results if there multiple peers were used as targets
            if (query_responses && query_responses.length == 1) {
                if (query_responses[0] instanceof Error) {
                    console.error("error from query = ", query_responses[0]);
                } else {
                    console.log("Response is ", query_responses[0].toString());
                    //console.log(query_responses[0].toString())
                    Display2.textContent = query_responses[0].toString();
                }
            } else {
                console.log("No payloads were returned from query");
            }
        }).catch((err) => {
            console.error('Failed to query successfully :: ' + err);
        });
        });
    </script>
</body>
</html>
